package com.itheima.edu.info.manager.controller;

import com.itheima.edu.info.manager.codeupgrade.CoderUpgrade;
import com.itheima.edu.info.manager.domain.AppEnum;
import com.itheima.edu.info.manager.domain.Option;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.*;
import java.lang.reflect.Method;
import java.util.Scanner;

public class Controller {
    //用户录入信息的扫描类
    Scanner sc = new Scanner(System.in);

    public static Element getElement(String str) throws DocumentException {
        SAXReader sax = new SAXReader();
        Document document = sax.read(new File("学生和老师管理系统客户端优化版\\xml\\fanshe.xml"));
        Element root = document.getRootElement();
        return root.element(str);
    }

    public void fanShe(Option method, String job) {
        try {
            Element coderClass = getElement("CoderUpgrade");
            Class clazz = Class.forName(coderClass.getText());
            CoderUpgrade coder = (CoderUpgrade) clazz.newInstance();
            Method coderMethod = clazz.getDeclaredMethod(getElement(method.name()).getText(), String.class);
            coderMethod.setAccessible(true);
            coderMethod.invoke(coder, job);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //控制层的老师登录功能
    public void login(String job) {
        fanShe(Option.LOGIN, job);
    }

    private void update(String job) {
        fanShe(Option.UPDATE, job);
    }

    private void delete(String job) {
        fanShe(Option.DELETE, job);
    }

    private void select(String job) {
        fanShe(Option.FIND, job);
    }

    private void add(String job) {
        fanShe(Option.ADD, job);
    }


    public void start(AppEnum appEnum) {
        exit:
        while (true) {
            if (appEnum == AppEnum.TEACHER) {
                System.out.println("=========================欢迎您来到老师管理系统==========================");
                System.out.println("请输入您的选择:1.增加老师信息\t2.删除老师信息\t3.修改老师信息.\t4.查看老师信息\t5.退出系统");
            } else {
                System.out.println("--------欢迎来到 <学生> 管理系统--------");
                System.out.println("请输入您的选择: 1.添加学生  2.删除学生  3.修改学生  4.查看学生  5.退出");
            }
            int choice = sc.nextInt();
            switch (choice) {
                case 1:
                    add(appEnum.name().toLowerCase());
                    break;
                case 2:
                    delete(appEnum.name().toLowerCase());
                    break;
                case 3:
                    update(appEnum.name().toLowerCase());
                    break;
                case 4:
                    select(appEnum.name().toLowerCase());
                    break;
                case 5:
                    System.out.println("感谢您的使用,下次再见!");
//                    System.exit(0);
                    break exit;
                default:
                    System.out.println();
                    break;
            }
        }
    }

}
